package com.assic.utils.md5;

import java.security.MessageDigest;

/**
 * MD5摘要工具类
 * 
 * @author kipy
 * 
 */
public class MD5Util {

	/**
	 * 获取摘要
	 * 
	 * @param origStr
	 *            获取摘要的明文
	 * @return 密文摘要
	 */
	public static String getDigester(String origStr) {
		String result = "";
		try {
			result = Base64Encoder.encode(MessageDigest.getInstance("md5")
					.digest(origStr.getBytes()));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * MD5比对
	 * 
	 * @param str
	 *            明文
	 * @param shortStr
	 *            摘要
	 * @return 当前摘要是否属于当前明文
	 */
	public static boolean MD5equals(String str, String shortStr) {
		return getDigester(str).equals(shortStr);
	}

	/**
	 * 强加密
	 * 
	 * @param n
	 *            加密次数
	 * @param str
	 *            明文
	 * @return 强加密摘要
	 */
	public static String strongDigester(int n, String str) {
		if (n < 1) {
			n = 1;
		}
		if (n == 1) {
			return getDigester(str);
		}
		return getDigester(strongDigester(n - 1, str));

	}

	/**
	 * 强加密MD5比对
	 * 
	 * @param n
	 *            加密次数
	 * @param str
	 *            明文
	 * @param shortStr
	 *            密文摘要
	 * @return 当前摘要是否属于当前明文的强加密文本
	 */
	public static boolean strongDigesterequals(int n, String str,
			String shortStr) {
		return strongDigester(n, str).equals(shortStr);

	}
}
